package org.example.analysis.model;

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.ArrayList;
import java.util.List;

/**
 * 方法调用信息
 */
@Data
@Accessors(chain = true)
public class MethodCallInfo {
    /**
     * 方法所在类名
     */
    private String className;
    
    /**
     * 方法名
     */
    private String methodName;
    
    /**
     * 方法参数类型列表
     */
    private List<String> parameterTypes;
    
    /**
     * 调用的方法列表
     */
    private List<MethodCallInfo> calledMethods = new ArrayList<>();
    
    /**
     * 调用深度（从根节点开始计算）
     */
    private int depth;
    
    /**
     * 方法在源码中的起始行
     */
    private int startLine;
    
    /**
     * 方法在源码中的结束行
     */
    private int endLine;
    
    /**
     * 方法注释
     */
    private String comment;
    
    /**
     * 获取方法的完整签名
     */
    public String getMethodSignature() {
        StringBuilder signature = new StringBuilder();
        signature.append(className).append("#").append(methodName).append("(");
        if (parameterTypes != null && !parameterTypes.isEmpty()) {
            signature.append(String.join(", ", parameterTypes));
        }
        signature.append(")");
        return signature.toString();
    }
} 